package com.he.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.he.domain.dto.ConditionDTO;
import com.he.domain.dto.PageResult;
import com.he.domain.dto.TagDTO;
import com.he.domain.vo.ArticleConditionList;
import com.he.domain.vo.TagBackVO;
import com.he.domain.vo.TagOptionVO;
import com.he.domain.vo.TagVO;
import com.he.entity.Tag;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author He
 * @version 1.0
 * @Date 2023/9/17 17:08
 * @Desc 标签Service
 */
@Service
public interface TagService extends IService<Tag> {

    /**
     * 获取标签列表
     *
     * @return 标签列表
     */
    List<TagVO> listTagVO();

    /**
     * 查看标签下的文章
     * @param condition 条件
     * @return 文章列表
     */
    ArticleConditionList listArticleTag(ConditionDTO condition);

    /**
     * 从给定的标签名列表中查询已存在的标签
     *
     * @return 标签列表
     */
    List<String>  existTagNames(List<String> tagNames);

    /**
     * 获取标签选项
     *
     * @return 标签选项
     */
    List<TagOptionVO> listTagOption();

    /**
     * 查看后台标签列表
     *
     * @param condition 查询条件
     * @return 后台标签列表
     */
    PageResult<TagBackVO> listTagBackVO(ConditionDTO condition);


    void addTag(TagDTO tag);

    void deleteTag(List<Integer> tagIdList);

    void updateTag(TagDTO tag);
}
